package interfacesFerrovia;

public interface DefsGlobais {
	/**
	 * Defini��es globais (enumera��es, constantes, etc.
	 * 
	 * @author Fernando Vanini
	 * 
	 */

	/**
	 * Define os tipos de elementos da malha ferroviaria.
	 */
	public enum TipoElemento {
		COMPOSICAO, TRECHO, SENSOR, CHAVE
	}

	/**
	 * Define os tipos poss�veis de falhas.
	 */
	public enum TipoFalha {
		ELETRICA, MECANICA, FREIO, ACELERACAO, GERAL, INDEFINIDA
	}

	/**
	 * Define os atributos para cada um dos elementos da rede. Conven��es para
	 * os valores dos atributos: - tempos: inteiros, representando segundos. -
	 * distancia: float, representando metros. - velocidade: float,
	 * representanto m/s - acelera��o e frenagem : float, representanto m/s/s
	 * (cada uma sempre >= 0)
	 * 
	 * Conven��es para sentido da velocidade (trecho e chave): - velocidade > 0
	 * ==> sentido A->B - velocidade < 0 ==> sentido B->A
	 * 
	 * Conven��es para os trechos e composi��es - posi��o da composi��o: -
	 * extremidade A do trecho --> posi��o == 0 - extremidade B do trecho -->
	 * posi��o >= dist�ncia do trecho
	 */
	public enum TipoAtributo {
		// atributos fixos, comuns a todos os elementos
		ID, // identifica��o de um elemento da malha ferroviaria [ Valor: String
			// ]
		TIPO, // tipo do elemento [ Valor: TipoElemento ]

		// atributos espec�ficos de uma composi��o
		// -- fixos --
		COMPRIMENTO, // comprimento da composi��o. [ Valor: Integer ]
		VELOCIDADE_MAX, // velocidade m�xima da composi��o [ Valor: Float ]
		ACELERACAO_MAX, // acelera��o m�xima. [ Valor: Float ]
		FRENAGEM_MAX, // frenagem m�xima. [ Valor: Float ]
		ITINERARIO, // itiner�rio. [ Valor: String[] ]
		PARTIDA, // instante da partida (inicio da viagem) [ Valor: Integer ]
		// -- vari�veis ---
		ID_TR_CH_ATUAL, // id. do trecho ou chave atual. [ Valor: String ]
		POSICAO_ATUAL, // posi��o atual (num trecho). [ Valor: Float ]
		VEL_ATUAL, // velocidade atual. [ Valor: Float ]
		SENTIDO_ATUAL, // sentido (AB=>true, BA => false) [ Valor: Boolean ]
		ACEL_ATUAL, // acelera��o atual. [ Valor: Float ]
		FREN_ATUAL, // taxa de frenagem atual. [ Valor: Float ]
		EM_MOVIMENTO, // true => composi��o em movimento. [ Valor: Boolean ]

		// atributos espec�ficos de um trecho
		// -- fixos --
		DISTANCIA, // Dist�ncia entre as extremidades [ Valor: Float ]
		ID_TR_CH_A, // identifica��o da chave conectada � extremidade A [ Valor:
					// String ]
		ID_TR_CH_B, // identifica��o da chave conectada � extremidade B [ Valor:
					// String ]
		// N_SENSORES, // n�mero de sensores do trecho (eliminado 31/03) [
		// Valor: Integer ]
		// -- variaveis --
		N_COMPOSICOES, // n�mero de composi��es trafegando pelo trecho [ Valor:
						// Integer ]

		// atributos espec�ficos de uma chave
		// -- fixos --
		TRECHOS_A, // trechos conect�veis � extremidade A. [ Valor: String[] ]
		TRECHOS_B, // trechos conect�veis � extremidade B. [ Valor: String[] ]
		TEMPO_MUDANCA, // tempo de mudan�a de estado. [ Valor: Integer ]
		// DISTANCIA, // herdado de Trecho [ Valor: Integer ]
		// TEMPO_PASSAGEM, // tempo de passagem pela chave (eliminado) [ Valor:
		// Float ]
		// -- variaveis --
		EM_MUDANCA, // true => em mudan�a de estado. [ Valor: Boolean ]
		// TR_ATUAL_A, // trecho atual na extremidade A (herda de Trecho) [
		// Valor: String ]
		// TR_ATUAL_B, // trecho atual na extremidade B (herda de Trecho) [
		// Valor: String ]
		TEMPO_CONCLUSAO
		// tempo p/ concluir a mudan�a em curso [ Valor: Integer ]
	}

}